package com.demo.java.OD201_250.OD224;

import java.util.*;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【绘图机器】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145919676
 */
public class OdMain {
    public static void main(String[] args) {
        // 使用 Scanner 读取输入
        try (Scanner s = new Scanner(System.in)) {
            int n = s.nextInt(); // 读取路径段数量
            int e = s.nextInt(); // 读取终点 X 坐标
            int[][] ints = new int[n][2]; // 存储每段路径的 X 和 Y 偏移

            // 读取每个路径段的 X 和 Y 偏移
            for (int i = 0; i < n; ++i) {
                ints[i][0] = s.nextInt(); // 读取 X 坐标
                ints[i][1] = s.nextInt(); // 读取 Y 偏移
            }

            // 调用解决方法计算并输出总面积
            solveMethod(n, e, ints);
        }
    }

    // 计算并输出路径覆盖的总面积
    private static void solveMethod(int n, int e, int[][] ints) {
        // 按 X 坐标排序路径段
        Arrays.sort(ints, Comparator.comparingInt(a -> a[0]));

        int curX = 0;  // 当前 X 坐标，初始为 0
        int curY = 0;  // 当前 Y 坐标，初始为 0
        int area = 0;  // 总面积，初始为 0

        // 逐段计算面积
        for (int i = 0; i < n; ++i) {
            int x = ints[i][0]; // 当前路径段的 X 坐标
            int y = ints[i][1]; // 当前路径段的 Y 偏移

            // 计算当前路径段与上一段的面积
            area += (x - curX) * Math.abs(curY);
            curX = x; // 更新当前 X 坐标
            curY += y; // 更新当前 Y 坐标
        }

        // 如果当前 X 坐标小于终点 e，计算从当前 X 到 e 的面积
        if (curX < e) {
            area += (e - curX) * Math.abs(curY);
        }

        // 输出最终的总面积
        System.out.print(area);
    }
}